package com.wcs.exam.dao.impl.mapper.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 考试用户答案
 * </p>
 *
 * @author wcs
 * @since 2025-03-13
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("exam_user_answer")
public class ExamUserAnswer implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 记录ID
     */
    private Long recordId;

    /**
     * 考试类型
     */
    private Integer examType;

    /**
     * 关联ID
     */
    private Long relateId;

    /**
     * 课程ID
     */
    private Long courseId;

    /**
     * 试卷ID
     */
    private Long paperId;

    /**
     * 试卷大题ID
     */
    private Long titleId;

    /**
     * 题目ID
     */
    private Long questionId;

    /**
     * 题目类型(1:单选题、2:多选题、3:判断题、4:填空题、5:简答题、6:材料题)
     */
    private Integer questionType;

    /**
     * 题目分数
     */
    private BigDecimal questionScore;

    /**
     * 用户答案
     */
    private String userAnswer;

    /**
     * 用户得分
     */
    private BigDecimal userScore;

    /**
     * 评阅完成(0:未完成、1:已完成)
     */
    private Boolean evaluationComplete;

    /**
     * 评语
     */
    private String evaluationComment;

    /**
     * AI评阅(false：否、true：是)
     */
    private Boolean aiGrading;

    /**
     * AI用户得分
     */
    private BigDecimal aiUserScore;

    /**
     * AI评分依据
     */
    private String aiGradingReason;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 创建时间
     */
    private LocalDateTime gmtCreate;

    /**
     * 修改时间
     */
    private LocalDateTime gmtModified;
}
